//去掉字符串两边的空格。如果字符串为null,则返回""
function trim(str){
    return rtrim(ltrim(str));
}

//去掉字符串左边的空格
function ltrim(s){
    if(s == null) return "";
    var whitespace = new String(" \t\n\r");
    var str = new String(s);
    if (whitespace.indexOf(str.charAt(0)) != -1) {
        var j=0, i = str.length;
        while (j < i && whitespace.indexOf(str.charAt(j)) != -1){
            j++;
        }
        str = str.substring(j, i);
    }
    return str;
}

//去掉字符串右边的空格
function rtrim(s){
    if(s == null) return "";
    var whitespace = new String(" \t\n\r");
    var str = new String(s);
    if (whitespace.indexOf(str.charAt(str.length-1)) != -1){
        var i = str.length - 1;
        while (i >= 0 && whitespace.indexOf(str.charAt(i)) != -1){
            i--;
        }
        str = str.substring(0, i+1);
    }
    return str;
}

//校验是否为空
function isEmpty (s) {
  if (s == null || trim(s) == "" || typeof(s) == "undefined") return true;
  return false;
}

//校验字符串是否不为空
function isNotEmpty (s) {
	return !isEmpty(s);
}

//校验是否为整数
//sign - 如果要校验的对象为空，返回该值(必须为boolean型)，默认为false
function isInt(s,sign) {
	if (isEmpty(s)) return (arguments.length == 2 && sign == true);
	var re = new RegExp("^-?\\d+$");
	return re.test(s);
}

//校验是否为浮点数
//sign - 如果要校验的对象为空，返回该值(必须为boolean型)，默认为false
function isFloat(s,sign) {
	if (isEmpty(s)) return (arguments.length == 2 && sign == true);
	var re = new RegExp("^-?\\d+\\.?\\d*$");
	return re.test(s);
}

//校验是否全部由数字组成
//sign - 如果要校验的对象为空，返回该值(必须为boolean型)，默认为false
function isDigit(s,sign){
	if (isEmpty(s)) return (arguments.length == 2 && sign == true);
	var re = new RegExp("^-?\\d+\\.?$");
	return re.test(s);
}

//校验是否全部由字母，数字，下划线组成
//sign - 如果要校验的对象为空，返回该值(必须为boolean型)，默认为false
function isChar(s,sign) {
	if (isEmpty(s)) return (arguments.length == 2 && sign == true);
	var re = new RegExp("^[A-Za-z0-9_]*$");
	return re.test(s);
}

/**
 * 校验字符串是否包含中文（一个以上中文字符）.
 * @param s 要校验的字符串
 * @returns true：字符串包含中文；false：非中文字符串
 */
function isIncludedChinese(s) {
	var re = new RegExp("[\u4e00-\u9fa5]+");
	return re.test(s);
}

//判断是否是钱的形式,sign如果为true,则金钱可以为负数
function isMoney(s,sign){
	var strRef="";
	
	if(isEmpty(sign)) {
		strRef = "1234567890.";
	}else {
		strRef = "-1234567890.";
	}
		
	if(isEmpty(s)) return false;

	for (i=0;i<s.length;i++) {
  		var tempChar= s.substring(i,i+1);
  		if (strRef.indexOf(tempChar,0)==-1) {
   			return false; 
  		}
  		
	}
	var tempLen=s.indexOf(".");
   	if(tempLen!=-1){
    	var strLen=s.substring(tempLen+1,s.length);    		
    	if(strLen.length>2){ 
     		return false; 
    	}
   	}
   	
   var m = String(s);
   var dot=m.indexOf(".");
   var intMoney=m.substring(0,dot);
   if(intMoney.length >10 || String(s).length>=21){
      alert("位数过大，无法计算！");
   	  return false;
   }
   return true;
}

//校验是否为email地址
//sign - 如果要校验的对象为空，返回该值(必须为boolean型)，默认为false
function isEmail(s,sign) {
	if (isEmpty(s)) return (arguments.length == 2 && sign == true);
  var emailPat=/^(.+)@(.+)$/;
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
  var validChars="\[^\\s" + specialChars + "\]";
  var quotedUser="(\"[^\"]*\")";
  var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
  var atom=validChars + '+';
  var word="(" + atom + "|" + quotedUser + ")";
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
  var matchArray=s.match(emailPat);
  if (matchArray == null)  return false;
  var user=matchArray[1];
  var domain=matchArray[2];
  if (user.match(userPat) == null)   return false;
  var IPArray = domain.match(ipDomainPat);
  if (IPArray != null) {
    for (var i = 1; i <= 4; i++) {
      if (IPArray[i] > 255) return false;
    }
    return true;
  }
  var domainArray=domain.match(domainPat);
  if (domainArray == null)  return false;
  var atomPat=new RegExp(atom,"g");
  var domArr=domain.match(atomPat);
  var len=domArr.length;
  if ((domArr[domArr.length-1].length < 2) || (domArr[domArr.length-1].length > 3)) {
    return false;
  }
  if (len < 2) return false;
  return true;
}                     

//判断两个值是否相等
//两个参数都必须为数字型（整型或浮点型），否则返回false
function isEqual(one,two){
	if (!isFloat(one) && !isFloat(two)) return false;
	var p1 = parseFloat(one);
	var p2 = parseFloat(two);
	return (p1 == p2);
}

//判断第一个值是否大于第二个值，第一个是要被比较的值，第二个是参照物
//两个参数都必须为数字型（整型或浮点型），否则返回false
function isGreaterThan(one,two){
	if (!isFloat(one) && !isFloat(two)) return false;
	var p1 = parseFloat(one);
	var p2 = parseFloat(two);
	return (p1 > p2);
}

//判断第一个值是否大于第二个值，第一个是要被比较的值，第二个是参照物
//两个参数都必须为数字型（整型或浮点型），否则返回false
function isGreaterEqual(one,two){
	if (!isFloat(one) && !isFloat(two)) return false;
	var p1 = parseFloat(one);
	var p2 = parseFloat(two);
	return (p1 >= p2);
}

//格式化小写金额
//s,源字符串
//fraction,保留小数位数,缺省为2位
//sign,格式化金额为负数
function formatMoney(s,fraction,sign){

   var strRef="";
	
  if(isEmpty(sign)) {
	 strRef = "1234567890.";
  }else {
	 strRef = "-1234567890.";
  }
	
  if(!fraction) fraction=2;
  if(isEmpty(s)) {    
    return '';
  }
  
  for (i=0;i<s.length;i++) {
    tempChar= s.substring(i,i+1);
    if (strRef.indexOf(tempChar,0)==-1) {
    	alert('金额:'+s+',格式不正确,请检查');
      	return ''; 
    }
  }
  
  //四舍五入,按指定精度位数保留小数
  var muti=1;
  for(var i=1;i<=fraction;i++){
  	muti=muti*10;
  }
  money=''+Math.round(parseFloat(s)*muti)*1.0/(muti);
  tempLen=money.indexOf(".");
  if(tempLen!=-1){
    strLen=money.substring(tempLen+1,money.length);     
    for(j=strLen.length;j<fraction;j++){ 
     	money=''+money+'0'; 
     }
     return money;
  }
  else{  
    return ''+money+'.00';
  }
}
  
//得到字符串的准确长度,包含中文
function strlen(str)
{
	var len;
	var i;
	len = 0;
	for (i=0;i<str.length;i++)
	{
		if (str.charCodeAt(i)>255) len+=2; else len++;
	}
	return len;
}


 // 扩展eayui validatebox 插件的校验器。使用方式如<input type="text" class="easyui-validatebox" validType="minLength[5]">,
 // 如果需要对一个文本框进行多种类型的校验，多个校验器之间用空格分隔即可，使用方式如<input type="text" class="easyui-validatebox" validType="minLength[5] date digit">,
 // 增加以下校验器。
 // 1. minLength：最小输入长度校验器
 // 2. maxLength：最大输入长度校验器。
 // 3. digit: 数字校验器，校验是否为数字。
 // 4. phone: 手机号码校验器，校验是否输入有效的手机号码。
 // 5. date: 日期校验器，校验是否输入yyyy-mm-dd的日期格式。
$.extend($.fn.validatebox.defaults.rules, {
	minLength: {
		validator: function(value, param){
	    	return value.length >= param[0];
	    },
	    message: '请至少输入{0}位字符.'
    },
    maxLength: {
    	validator: function(value, param){
    		return value.length <= param[0];
    },
    	message: '该输入项必须小于{0}位.'
    },
    digit: {
	    validator: function(value){
	        return /^[0-9]{1,20}$/.test(value);
   	    },
        message: '该输入项为必输输入整形数字.'
    },
    float: {
	    validator: function(value){
	        return /^(-?\d+)(\.\d+)?$/.test(value);
   	    },
        message: '该输入项为必输输入数字.'
    },
    phone: {
	    validator: function(value){
   	 	   return /^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/.test(value);
   	    },
   	    message: '请输入有效的电话号码.'
    },
    mobile: {
    	validator: function(value){
    		return /^(\+86)?(1[0-9]{10})$/.test(value);
    	},
    	message: '请输入有效的手机号码.'
    },
    email: {
    	validator: function(value){
    		return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(value);
    	},
    	message: '请输入有效的email信箱.'
    },
    date: {
   	    	validator: function(value){
   	    	return /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/.test(value);
   	    },
   	    message: '请输入有效的日期.'
   	},
    checkIp: {
	    validator: function(value){
   	 	   return /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/.test(value);
   	    },
   	    message: '请输入有效的IP地址.'
    }
});

